Database sizes supported by commercially available database management systems (DBMS) continue to grow as the availability and cost per unit storage of disk-based storage and system memory increases. In general, a database can feature on-disk storage of data, in which data records are stored in one or more tables or other database structures on storage media (e.g. hard disks, optical storage, solid state storage, or the like) and read into main system memory as needed to respond to queries or other database operations. Alternatively, a database can feature in-memory storage of data, in which data records are stored in main system memory. As costs of main system memory continue to decrease, the feasibility of significant use of in-memory features increases. However, data capacity requirements of database systems also continue to increase. As such, hybrid approaches that involve features of both in-memory and on-disk systems are also advantageous.
In some examples of in-memory databases, a columnar table is composed of a delta part and a main part. The delta part receives changes to the table and stores these changes in a persistent log. Upon recovery, the delta part is rebuilt from the log. These in-memory databases use dictionaries to keep track of various transactions (e.g., a write operation) involving different rows of the table. Some dictionaries, such as traditional pushback dictionaries, append entries to the back of the dictionary based on the order in which they are written. Because these dictionaries are not sorted, the amount of time required to search for a particular row may become burdensome as the number of entries in the dictionary grows.